package net.androidstudy.koreabeach;

import java.io.InputStream;
import java.net.URL;
import java.util.Vector;




import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserFactory;

import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;


public class KoreaAreaBeach extends ListActivity implements OnItemClickListener{

	Vector<String> titleVector;	//해수욕장 이름이 저장되는 공간
	static Vector<KoreaBeachBean> beanVector;	//해수욕장에대한 모든 정보가 저장되는 변수
	String tagName="", title ="",phone ="",address ="",link ="",description ="",wido ="",kyungdo ="";	//각종변수저장
	String uri = "http://derp.biz-tax.co.kr/koreabeach.xml";	//xml사이트 주소설정
	URL beachURL;	//URL클래스 선언
	String beforeName;	//이전에 선택한 도시이름을 저장하는 변수
	String afterName;	//지금 선택한 도시이름을 저장한는변수
	KoreaBeachBean beachbean;	//빈클래스 선언
	static int index;	//아이템이 눌린 정보를 저장하는 객체
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		
		Intent i =getIntent();		//인텐트 객체 선언
		beforeName= i.getExtras().getString("areaname");		//이전에 선택한 데이터가 저장됨
		
		System.out.println("beforeName: "+beforeName);
		
		getData();
		
		//리스트에 데이터를 붙이기 위해서 arrayadapter객체 선언
		ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.listitem, titleVector);

		//리스트 뷰에 데이터 붙임
		setListAdapter(adapter);
		
		//리스트뷰객체를 선언
		ListView lv =getListView();
		//리스트뷰에 이벤트를부착 
		lv.setOnItemClickListener(this);
	}
	
	//xml을 parsing해서 데이터를 추출해주는 메소드
	public void getData(){
		
		//저장객체를 생성
		titleVector =new Vector<String>();
		beanVector =new Vector<KoreaBeachBean>();
		
		//xmlpullpaser이벤트를 사용하기위해서 xmlpullpaserfactory객체를 생성시킴
		try {
			XmlPullParserFactory factory= XmlPullParserFactory.newInstance();			
			factory.setNamespaceAware(true);	//네임스페이스 사용여부
			XmlPullParser xpp = factory.newPullParser();	//xmlpullpaser인테페이스를 객체처럼 사용
			beachURL = new URL(uri);			//웹사이트에 접속
			InputStream in = beachURL.openStream();			//접속후에 xml데이터를 읽어드림
			xpp.setInput(in , "UTF-8");			//읽어드린 xml데이터를 xmlpullpaser넘겨줌
			
			//이벤트를 실행시키기위해서
			int eventType = xpp.getEventType();
			
			//반복문을 돌면서 이벤트를 처리후 원하는 데이터를 추출
			while(eventType != XmlPullParser.END_DOCUMENT){
				
				if(eventType == XmlPullParser.START_TAG){
					tagName = xpp.getName();
					if(tagName.equals("item")){
						//태그네임 저장
						afterName = xpp.getAttributeValue(0);
					}
					
				}else if(eventType == XmlPullParser.TEXT){
					
					if(beforeName.equals(afterName)){
						if(tagName.equals("title")) title += xpp.getText();	//
						else if(tagName.equals("phone")) phone += xpp.getText();//
						else if(tagName.equals("address")) address += xpp.getText();//
						else if(tagName.equals("link")) link += xpp.getText();
						else if(tagName.equals("description")) description += xpp.getText();
						else if(tagName.equals("wido")) wido += xpp.getText();
						else if(tagName.equals("kyungdo")) kyungdo += xpp.getText();
					}
					
				}else if(eventType == XmlPullParser.END_TAG){
					if(beforeName.equals(afterName)){
						
						tagName = xpp.getName();
						if(tagName.equals("item")){
							beachbean = new KoreaBeachBean();
							//타이틀백터에 타이틀만 저장
							titleVector.add(title);
							
							beachbean.setTitle(title);
							beachbean.setAddress(address);
							beachbean.setPhone(phone);
							beachbean.setUrl(link);
							beachbean.setDescription(description);
							beachbean.setWido(wido);
							beachbean.setKyungdo(kyungdo);
							
							beanVector.add(beachbean);
							
							//초기화
							title=""; phone="";address="";link="";
							description="";wido="";kyungdo="";
						}						
					}					
				}				
				//다음이벤트 적용
				eventType = xpp.next();
			}			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	@Override
	public void onItemClick(AdapterView<?> parent, View view, int position,
			long id) {
		index = position;
		Intent intent = new Intent().setClass(KoreaAreaBeach.this, KoreaBeachDetail.class);
	
		//새로운 화면을 띄우시오
		startActivity(intent);		
	}

	
}